Visual Studio'da C# ile yazdığım basit bir compiler'da veritabanı olarak Visual Studio'nun kendisinde bulunan SQL modülünü kullandım. Gayet güzel çalışıyor şu anda, ancak bu programı diğer kullanıcıların da kullanması için SQL Server yüklemeleri gerekyor. Hem bundan kaçınmak hem de daha basite indir
Visual Studio'da C# ile yazdığım basit bir compiler'da veritabanı olarak Visual Studio'nun kendisinde bulunan SQL modülünü kullandım. Gayet güzel çalışıyor şu anda, ancak bu programı diğer kullanıcıların da kullanması için SQL Server yüklemeleri gerekyor. Hem bundan kaçınmak hem de daha basite indirgemek için bu veritabanını XML ile yazmaya karar verdim (daha doğrusu karar verdirildim), ancak bunu nasıl yapacağım hakkında hiç bir fikrim yok, internetten de bulamıyorum. XML Schema denemeye çalıştım ama ne olduğunu anlayamadım bile. Nasıl yapacağımı açıklayan olursa süper olur.
Elimde iki adet tablo var şu anda, 35 satır 5 sütun, ve 8 satır 3 sütun olmak üzere. Bunlar daha sonra yaklaşık 5 katına çıkabilir, ama sorun olacağını sanmıyorum. yine de buna karşı bir alternatif varsa öğrenmek isterim tabi ki.
Teşekkürler
0
the rain baron (
19.02.08)
C# kullanmadım ama SQL Server kurdurmak yerine re-dist DLL'leri programın yanına atmak çözer diye sallayabilirim.
XML olayı için ise size gereken bir XML parser. C#'a hakimseniz kendiniz yazabilirsiniz veya netten bir library indirip XML yazıp okuyabilirsiniz. Yazacağınız XML dökümanı şu tarzda bir şey olacak:
-- Buraya yazamadığımdan screenshot koyuyorum --
img166.imageshack.us
0
XML olarak veriyi saklayabilirsin fakat XMLi bir veri tabani olarak kullanamazsin. Veri tabanlarinin en onemli ozelligi birden fazla tablo uzerinden SQL komutlari ile secim yapabilmek, verinin tamamini hafizada tutmamak, veri eklemede, silmede veya degistirmede locking vs gibi bir dolu ozelligi var.
Veritabani olarak XML kullanacaksan, XML dosyasini sorgulamak icin XPath ve XPathDocument class'larini kullanabilirsin, veya XMLReader ile parse edebilirsin. Fakat bu bir veritabani querysine gore binlerce kat yavas olur. Onun disinda bir XML dokumanina yeni veri eklemek veya degistirmek icin tum bilgiyi hafizaya almak zorunda
kalabilirsin. XML eger sadece verinin bir kismini okuyacaksan veya veriyi bir yerden bir yere transfer edeceksen mantikli bir cozum, XMLi veritabani olarak kullanmak cok yanlis olabilir (bazi cok ozel durumlari dahil etmiyorum) ama senin orneginde SQL Server ile kiyasliyorsun. Bu durumda XML ne yazik ki dogru bir cozum degil.
Eger son kullaniciya bir veri tabani sunucusu deploy etmek istemiyorsan, Microsoft Access ile veri tabanini tasarlayayip sonra ADO.NET ile erisim kurabilirsin, bu durumda sistem ADO.NET suruculeri ile Access databaseini ayaga kaldirir, ve mini bir SQL Server gibi dusuk (1 milyon satir) verilerde son derede tatmin edici sonuclar verir.
Bu durumda son kullaniciya programini deploy ettiginde en kotu ihtimalle son kullaniciya MDAC'in son versiyonunu yukletmek zorunda kalabilirsin, bunu da WiX temelli bir setup yazarsan custom actionlarla prerequisite olarak mecbur kilabilirsin.
(Microsoft XML ekibinde calistigimi not etmek istiyorum)
0
Dedigin olcude bir is (35x5 + 8x3 tablolar x 5) icin SQL Server veya Access'e gerek yok. Visual Studio'da Proje'ne bir DataSet ekle. DataSet'i dedigin tablolari icerecek sekilde design et (DataSeti'i cift tiklarsan design modda acilir sonra Toolbox'i kullanarak tablolari ve iliskilerini olusturursun). DataSet'i ekledigin zaman bu data model'i abstract eden bir class da olusturuyor VS sana. Bunun instance'ini olusturabilirsin startup'da. Bu class'in en guzel ozelligi ReadXml (baslangicta okursun) ve WriteXml (kapanista yazarsin) method'larinin olmasi. DataSet dedigin olcekte islerin kat kat ustu icin optimize edilmis bir class. Yani gonul rahatligiyla kullanabilirsin. Tek sorunu SQL query'lerini cok kisitli bir sekilde desteklemesi. Sadece tablolar uzerinde "Select" statement'lari calistirabiliyorsun. Fakat LINQ kullanma imkanin olursa (>= .NET 3.5 & >= VS2008) bu kisit belli bir olcude ortadan kalkiyor.
0